//index.js
//获取应用实例
const app = getApp()
Page({
  data: {
    showView: true,//显示详情按钮是否显示
    cond2: false, //判断标志：检测是否存在多个匹配信息
    cond3: false, //判断标志：检测是否存在多个匹配信息
    show1: false, //法律内容是否显示
    open1: true,  //特征表述是否显示
    show2: false,
    open2: true,
    show3: false,
    open3: true,
    legalBasis1: "",//法律依据
    consequence1: "",//违法后果
    legalBasis2: "",//法律依据
    consequence2: "",//违法后果
    legalBasis3: "",//法律依据
    consequence3: "",//违法后果
    searchKey: "",//监控搜索框输入信息
    keyWord1: "",//第一匹配信息
    description1: "", //信息答案2
    keyWord2: "",//第二匹配信息
    description2: "", //信息答案2
    keyWord3: "",//第三匹配信息
    description3: "" //信息答案3
  },

  /**
   * 
   * 搜索功能
   */

  //监听搜索框输入的信息
  searchInput: function (e) {
    // console.log(e)
    let value = e.detail.value //搜索框输入的信息
    this.setData({
      searchKey: value //监听搜索输入关键字信息
    })
  },

  //设置搜索规则
  search: function (e) {
    let searchKey = this.data.searchKey //监听搜索框输入的信息
    if (searchKey == '') { //如果不输入任何字符直接搜索，返回提示信息
      this.setData({
        showView: false,
        keyWord1: searchKey,
        description1: "请输入查询内容！",
      })
      return
    }
    //正则表达式
    var search_len = 0
    const patt = /([^\w\s`!@#$%^&*()_+~\-=[\]\;',.\/{}|:"<>?·！@#￥%……&*（）——+【】、；’，。{}|：”《》？“‘]|\d+.?\d+ ?(ml|L|kg|g)?)/ig
    var fuzzySearch = '(' + searchKey.match(patt)
      .map(function (s) {
        search_len++
        return s += '.*'
      }).join('|') + '){' + Math.max(1, search_len - 2) + ',}'
    console.log(fuzzySearch)
    if(search_len<2){
      fuzzySearch = searchKey
    }else{
      fuzzySearch = fuzzySearch
    }
    var db = wx.cloud.database() //连接数据库
    db.collection('law').where({
      feature: db.RegExp({//按照KeyWord模糊查询
        regexp: fuzzySearch, //模糊搜索监听到的搜索信息
        options: 'i', //不区分大小写
      })
    }).get().then(res => { //获取查询到的信息
      console.log(res)
      if (res.data.length == 0) { //如果搜索信息在数据库中找不到
        this.setData({
          showView: false,
          keyWord1: searchKey,
          description1: "没有找到要查找内容！",
        })
        return
      }

      var total = res.data.length //总匹配信息个数
      var _collections = new Array() //声明一个数组
      //console.log(total)
      //将匹配信息存入数组
      for (var i = 0; i < total; i++) {
        _collections.push(JSON.parse(JSON.stringify(res.data[i])))
      }
      //console.log(_collections.length)
      this.setData({//显示第一匹配信息
        keyWord1: _collections[0].title,
        description1: _collections[0].feature,
        legalBasis1: _collections[0].legalBasis,
        consequence1: _collections[0].consequence
      })//显示第二匹配信息
      if ((_collections.length == 0) || (_collections.length != 1)) {
        this.setData({//校验是否有多条数据
          cond2: true,//将标志位置为true
          keyWord2: _collections[1].title,//显示第二匹配数据
          description2: _collections[1].feature,
          legalBasis2: _collections[1].legalBasis,
          consequence2: _collections[1].consequence
        })
      }
      if ((_collections.length == 0) || (_collections.length != 2)) {
        this.setData({//校验是否有多条数据
          cond3: true,//将标志位置为true
          keyWord3: _collections[2].title,//显示第三匹配数据
          description3: _collections[2].feature,
          legalBasis3: _collections[2].legalBasis,
          consequence3: _collections[2].consequence
        })
      }
      //console.log(_collections)
    }).catch(res => {
      console.log(res)
    })
  },

  //设置弹窗规则
  showModal(e) {
    this.setData({ //设置搜索弹窗表头的字符
      modalName: e.currentTarget.dataset.target
    })
    this.search(e) //调用搜索函数
  },
  //展示法律内容细节
  showDetail1(e) {
    this.setData({
      show1: true, //法律依据和后果是否显示
      open1: false  //特征表述是否显示
    })
  },
  closeDetail1(e) {
    this.setData({
      show1: false, //法律依据和后果是否显示
      open1: true  //特征表述是否显示
    })
  },
  showDetail2(e) {
    this.setData({
      show2: true, //法律依据和后果是否显示
      open2: false  //特征表述是否显示
    })
  },
  closeDetail2(e) {
    this.setData({
      show2: false, //法律依据和后果是否显示
      open2: true  //特征表述是否显示
    })
  },
  showDetail3(e) {
    this.setData({
      show3: true, //法律依据和后果是否显示
      open3: false  //特征表述是否显示
    })
  },
  closeDetail3(e) {
    this.setData({
      show3: false, //法律依据和后果是否显示
      open3: true  //特征表述是否显示
    })
  },
  //关闭弹窗
  hideModal(e) {
    this.setData({
      showView: true,
      modalName: null,
      keyWord1: "",
      description1: "",
      cond1: false, //标志位复位
      cond2: false, //标志位复位
      show1: false, //法律依据和后果是否显示
      open1: true,  //特征表述是否显示
      show2: false, //法律依据和后果是否显示
      open2: true,  //特征表述是否显示
      show3: false, //法律依据和后果是否显示
      open3: true  //特征表述是否显示
    })
  },

  /**
 * 生命周期函数--监听页面加载
 */
  onLoad: function (options) {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '烟草法律检索小程序'
    }
  }
})

